package cn.com.guage.dtm;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import java.io.File;
import java.io.IOException;

public class PdfEditor {

    // 查看 PDF 文件
    public static void viewPdf(String filePath) {
        try (PDDocument document = PDDocument.load(new File(filePath))) {
            int pageCount = document.getNumberOfPages();
            System.out.println("该 PDF 文件共有 " + pageCount + " 页。");
        } catch (IOException e) {
            System.err.println("查看 PDF 文件时出错: " + e.getMessage());
        }
    }

    // 编辑 PDF 文件，这里简单示例为在第一页添加一段文本
    public static void editPdf(String inputFilePath, String outputFilePath) {
        try (PDDocument document = PDDocument.load(new File(inputFilePath))) {
            PDPage firstPage = document.getPage(0);
            try (PDPageContentStream contentStream = new PDPageContentStream(document, firstPage, PDPageContentStream.AppendMode.APPEND, true, true)) {
                contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
                contentStream.beginText();
                contentStream.newLineAtOffset(25, 700);
                contentStream.showText("这是通过 Java 添加的文本。");
                contentStream.endText();
            }
            document.save(outputFilePath);
            System.out.println("PDF 文件编辑并保存成功。");
        } catch (IOException e) {
            System.err.println("编辑 PDF 文件时出错: " + e.getMessage());
        }
    }

    // 导出 PDF 文件，这里简单将现有文件另存为新文件
    public static void exportPdf(String inputFilePath, String outputFilePath) {
        try (PDDocument document = PDDocument.load(new File(inputFilePath))) {
            document.save(outputFilePath);
            System.out.println("PDF 文件导出成功。");
        } catch (IOException e) {
            System.err.println("导出 PDF 文件时出错: " + e.getMessage());
        }
    }

    // 保存 PDF 文件，功能与导出类似
    public static void savePdf(String inputFilePath, String outputFilePath) {
        exportPdf(inputFilePath, outputFilePath);
    }

    public static void main(String[] args) {
        String inputFilePath = "D:\\test\\input.pdf";
        String outputFilePath = "D:\\test\\output.pdf";

        // 查看 PDF 文件
        viewPdf(inputFilePath);

        // 编辑 PDF 文件
        editPdf(inputFilePath, outputFilePath);

        // 导出 PDF 文件
        exportPdf(inputFilePath, outputFilePath);

        // 保存 PDF 文件
        savePdf(inputFilePath, outputFilePath);
    }
}    